Specify the tissue of interest, run the boilerplate code which sets up the functions and environment, load the tissue object.
tissue_of_interest = "Thymus"
library(here)
source(here("00_data_ingest", "02_tissue_analysis_rmd", "boilerplate.R"))
tiss <- load_tissue_droplet(tissue_of_interest)
Performing log-normalization
0% 10 20 30 40 50 60 70 80 90 100%
|----|----|----|----|----|----|----|----|----|----|
**************************************************|
[1] "Scaling data matrix"
|
| | 0%
|
|================================================================================================| 100%
Calculating gene means
0% 10 20 30 40 50 60 70 80 90 100%
|----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variance to mean ratios
0% 10 20 30 40 50 60 70 80 90 100%
|----|----|----|----|----|----|----|----|----|----|
**************************************************|


PCElbowPlot(object = tiss)

# Set number of principal components.
n.pcs = 10
# Set resolution
res.used <- 0.5
tiss <- FindClusters(object = tiss, reduction.type = "pca", dims.use = 1:n.pcs,
resolution = res.used, print.output = 0, save.SNN = TRUE)
tiss <- RunTSNE(object = tiss, dims.use = 1:n.pcs, seed.use = 10, perplexity=30)
# note that you can set do.label=T to help label individual clusters
TSNEPlot(object = tiss, do.label = T)

# Batch and animal effects
TSNEPlot(object = tiss, do.return = TRUE, group.by = "plate.barcode")
Error in FetchData(object = object, vars.all = group.by) :
Error: plate.barcode not found
Check expression of genes of interset.

Dotplots let you see the intensity of expression and the fraction of cells expressing for each of your genes of interest.

VlnPlot(tiss, "Cd3g")

VlnPlot(tiss, "Krt5") #stromal marker

VlnPlot(tiss, "Vim") #stromal marker, also mesenchymal

VlnPlot(tiss, "Pecam1") #fibroblasts

VlnPlot(tiss, "Pecam1") #fibroblasts

GenePlot(tiss, "Cd3d", "Vim")

How big are the clusters?
table(tiss@ident)
0 1 2 3 4 5 6 7 8
334 283 227 219 187 71 44 33 31
Which markers identify a specific cluster?
#clust.markers <- FindMarkers(object = tiss, ident.1 = 3, only.pos = TRUE, min.pct = 0.25, thresh.use = 0.25)
#print(x = head(x= clust.markers, n = 10))
Assigning cell type identity to clusters
At a coarse level, we can use canonical markers to match the unbiased clustering to known cell types:
free_annotation <- c("DN4-DP in transition Cd69_negative thymocytes",
"DN4-DP transition_Cd69_negative_rapidly dividing thymocytes",
"DN4-DP transition_Cd69_low thymocytes",
"DN4-DP in transition_Cd69_negative_rapidly dividing thymocytes",
"DN4-DP in transition Cd69_positive thymocytes",
"DN4-DP in transition Cd69_negative_thymocytes",
"DN1 thymocytes",
"DN3-DN4 thymocytes",
"antigen presenting cells")
cell_ontology_class <-c("immature T cell", "immature T cell","immature T cell","immature T cell","immature T cell","DN1 thymic pro-T cell","immature T cell", "professional antigen presenting cell")
tiss@meta.data[,'free_annotation'] <- plyr::mapvalues(x = tiss@meta.data$cluster.ids, from = cluster.ids, to = free_annotation)
stash_annotations(tiss, cluster.ids, free_annotation, cell_ontology_class)
Error in plyr::mapvalues(x = tiss@ident, from = cluster.ids, to = cell_ontology_class) :
`from` and `to` vectors are not the same length.
TSNEPlot(object = tiss, do.label = TRUE, pt.size = 0.5, group.by='free_annotation')
ggsave ("TSNE_thymus2.pdf")
Saving 7.29 x 4.51 in image

Save the Robject for later
When you save the annotated tissue, please give it a name.
filename = here('00_data_ingest', '04_tissue_robj_generated',
paste0("droplet_", tissue_of_interest, "_seurat_tiss.Robj"))
print(filename)
[1] "/Users/patricia/Documents/GitHub/tabula-muris/00_data_ingest/04_tissue_robj_generated/droplet_Thymus_seurat_tiss.Robj"
save(tiss, file=filename)
# To reload a saved object
# filename = here('00_data_ingest', '04_tissue_robj_generated',
# paste0("facs", tissue_of_interest, "_seurat_tiss.Robj"))
# load(file=filename)
Figures for Supplement
LS0tCnRpdGxlOiAiVGh5bXVzIGRyb3BsZXQgTm90ZWJvb2siCm91dHB1dDoKICBodG1sX2RvY3VtZW50OiBkZWZhdWx0CiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdAotLS0KClNwZWNpZnkgdGhlIHRpc3N1ZSBvZiBpbnRlcmVzdCwgcnVuIHRoZSBib2lsZXJwbGF0ZSBjb2RlIHdoaWNoIHNldHMgdXAgdGhlIGZ1bmN0aW9ucyBhbmQgZW52aXJvbm1lbnQsIGxvYWQgdGhlIHRpc3N1ZSBvYmplY3QuCgpgYGB7cn0KdGlzc3VlX29mX2ludGVyZXN0ID0gIlRoeW11cyIKbGlicmFyeShoZXJlKQpzb3VyY2UoaGVyZSgiMDBfZGF0YV9pbmdlc3QiLCAiMDJfdGlzc3VlX2FuYWx5c2lzX3JtZCIsICJib2lsZXJwbGF0ZS5SIikpCnRpc3MgPC0gbG9hZF90aXNzdWVfZHJvcGxldCh0aXNzdWVfb2ZfaW50ZXJlc3QpCmBgYAoKYGBge3IsIGVjaG89RkFMU0UsIGZpZy5oZWlnaHQ9NCwgZmlnLndpZHRoPTh9ClBDSGVhdG1hcChvYmplY3QgPSB0aXNzLCBwYy51c2UgPSAxOjMsIGNlbGxzLnVzZSA9IDUwMCwgZG8uYmFsYW5jZWQgPSBUUlVFLCBsYWJlbC5jb2x1bW5zID0gRkFMU0UsIG51bS5nZW5lcyA9IDgpCmBgYAoKCgpgYGB7cn0KUENFbGJvd1Bsb3Qob2JqZWN0ID0gdGlzcykKYGBgCgpgYGB7cn0KIyBTZXQgbnVtYmVyIG9mIHByaW5jaXBhbCBjb21wb25lbnRzLiAKbi5wY3MgPSAxMApgYGAKCmBgYHtyfQojIFNldCByZXNvbHV0aW9uIApyZXMudXNlZCA8LSAwLjUKCnRpc3MgPC0gRmluZENsdXN0ZXJzKG9iamVjdCA9IHRpc3MsIHJlZHVjdGlvbi50eXBlID0gInBjYSIsIGRpbXMudXNlID0gMTpuLnBjcywgCiAgICByZXNvbHV0aW9uID0gcmVzLnVzZWQsIHByaW50Lm91dHB1dCA9IDAsIHNhdmUuU05OID0gVFJVRSkKYGBgCgpgYGB7cn0KdGlzcyA8LSBSdW5UU05FKG9iamVjdCA9IHRpc3MsIGRpbXMudXNlID0gMTpuLnBjcywgc2VlZC51c2UgPSAxMCwgcGVycGxleGl0eT0zMCkKYGBgCgpgYGB7cn0KIyBub3RlIHRoYXQgeW91IGNhbiBzZXQgZG8ubGFiZWw9VCB0byBoZWxwIGxhYmVsIGluZGl2aWR1YWwgY2x1c3RlcnMKVFNORVBsb3Qob2JqZWN0ID0gdGlzcywgZG8ubGFiZWwgPSBUKQpgYGAKCmBgYHtyfQojIEJhdGNoIGFuZCBhbmltYWwgZWZmZWN0cwpUU05FUGxvdChvYmplY3QgPSB0aXNzLCBkby5yZXR1cm4gPSBUUlVFLCBncm91cC5ieSA9ICJwbGF0ZS5iYXJjb2RlIikKVFNORVBsb3Qob2JqZWN0ID0gdGlzcywgZG8ucmV0dXJuID0gVFJVRSwgZ3JvdXAuYnkgPSAibW91c2UuaWQiKQpgYGAKCkNoZWNrIGV4cHJlc3Npb24gb2YgZ2VuZXMgb2YgaW50ZXJzZXQuCgpgYGB7ciwgZWNobz1GQUxTRSwgZmlnLmhlaWdodD0xMiwgZmlnLndpZHRoPTh9CmdlbmVzX3RvX2NoZWNrID0gYygnVmltJywnS3J0NScsJ0tydDgnLCdQdHByYycsJ0VwY2FtJywnSDItQWIxJywnSDItQWEnLCdDZDNlJywnQ2QzZCcsJ0NkM2cnLCdDZDQnLCdDZDhhJywnQ2Q4YjEnLCdFdHMxJywnQ2Q0NCcsJ0lsMnJhJywgJ1RvcDJhJywnQ2Q4NicsJ0NkMTQnLCdDZDE5JywnSXRnYXgnLCdEbnR0JywnUmFnMScsJ1JhZzInLCdQdGNyYScsJ01raTY3JywnQ2Q2OScsJ0NkMjcnKQpGZWF0dXJlUGxvdCh0aXNzLCBnZW5lc190b19jaGVjaywgcHQuc2l6ZSA9IDEsIG5Db2wgPSAzKQpgYGAKCkRvdHBsb3RzIGxldCB5b3Ugc2VlIHRoZSBpbnRlbnNpdHkgb2YgZXhwcmVzc2lvbiBhbmQgdGhlIGZyYWN0aW9uIG9mIGNlbGxzIGV4cHJlc3NpbmcgZm9yIGVhY2ggb2YgeW91ciBnZW5lcyBvZiBpbnRlcmVzdC4KCmBgYHtyLCBlY2hvPUZBTFNFLCBmaWcuaGVpZ2h0PTgsIGZpZy53aWR0aD04fQojIFRvIGNoYW5nZSB0aGUgeS1heGlzIHRvIHNob3cgcmF3IGNvdW50cywgYWRkIHVzZS5yYXcgPSBULgojRG90UGxvdCh0aXNzLCBnZW5lc190b19jaGVjaywgY29sLm1heCA9IDIuNSwgcGxvdC5sZWdlbmQgPSBULCBkby5yZXR1cm4gPSBUKSArIGNvb3JkX2ZsaXAoKQpWbG5QbG90KHRpc3MsIGdlbmVzX3RvX2NoZWNrKQpgYGAKCmBgYHtyfQpWbG5QbG90KHRpc3MsICJDZDNnIikKVmxuUGxvdCh0aXNzLCAiS3J0NSIpICNzdHJvbWFsIG1hcmtlcgpWbG5QbG90KHRpc3MsICJWaW0iKSAjc3Ryb21hbCBtYXJrZXIsIGFsc28gbWVzZW5jaHltYWwKVmxuUGxvdCh0aXNzLCAiUGVjYW0xIikgI2ZpYnJvYmxhc3RzClZsblBsb3QodGlzcywgIlBlY2FtMSIpICNmaWJyb2JsYXN0cwoKR2VuZVBsb3QodGlzcywgIkNkM2QiLCAiVmltIikKYGBgCgoKSG93IGJpZyBhcmUgdGhlIGNsdXN0ZXJzPwpgYGB7cn0KdGFibGUodGlzc0BpZGVudCkKYGBgCgpXaGljaCBtYXJrZXJzIGlkZW50aWZ5IGEgc3BlY2lmaWMgY2x1c3Rlcj8KYGBge3J9CiNjbHVzdC5tYXJrZXJzIDwtIEZpbmRNYXJrZXJzKG9iamVjdCA9IHRpc3MsIGlkZW50LjEgPSAzLCBvbmx5LnBvcyA9IFRSVUUsIG1pbi5wY3QgPSAwLjI1LCB0aHJlc2gudXNlID0gMC4yNSkKI3ByaW50KHggPSBoZWFkKHg9IGNsdXN0Lm1hcmtlcnMsIG4gPSAxMCkpCmBgYAoKIyMgQXNzaWduaW5nIGNlbGwgdHlwZSBpZGVudGl0eSB0byBjbHVzdGVycwoKQXQgYSBjb2Fyc2UgbGV2ZWwsIHdlIGNhbiB1c2UgY2Fub25pY2FsIG1hcmtlcnMgdG8gbWF0Y2ggdGhlIHVuYmlhc2VkIGNsdXN0ZXJpbmcgdG8ga25vd24gY2VsbCB0eXBlczoKCmBgYHtyfQojIHN0YXNoIGN1cnJlbnQgY2x1c3RlciBJRHMKdGlzcyA8LSBTdGFzaElkZW50KG9iamVjdCA9IHRpc3MsIHNhdmUubmFtZSA9ICJjbHVzdGVyLmlkcyIpCgojIGVudW1lcmF0ZSBjdXJyZW50IGNsdXN0ZXIgSURzIGFuZCB0aGUgbGFiZWxzIGZvciB0aGVtCmNsdXN0ZXIuaWRzIDwtIGMoMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCkKZnJlZV9hbm5vdGF0aW9uIDwtIGMoIkRONC1EUCBpbiB0cmFuc2l0aW9uIENkNjlfbmVnYXRpdmUgdGh5bW9jeXRlcyIsCiAgICAgICAgICAgICAgICAgICAgICJETjQtRFAgdHJhbnNpdGlvbl9DZDY5X25lZ2F0aXZlX3JhcGlkbHkgZGl2aWRpbmcgdGh5bW9jeXRlcyIsCiAgICAgICAgICAgICAgICAgICAgICJETjQtRFAgdHJhbnNpdGlvbl9DZDY5X2xvdyB0aHltb2N5dGVzIiwKICAgICAgICAgICAgICAgICAgICAgIkRONC1EUCBpbiB0cmFuc2l0aW9uX0NkNjlfbmVnYXRpdmVfcmFwaWRseSBkaXZpZGluZyB0aHltb2N5dGVzIiwKICAgICAgICAgICAgICAgICAgICAgIkRONC1EUCBpbiB0cmFuc2l0aW9uX0NkNjlfcG9zaXRpdmUgdGh5bW9jeXRlcyIsIAogICAgICAgICAgICAgICAgICAgICAiRE40LURQIGluIHRyYW5zaXRpb25fQ2Q2OV9uZWdhdGl2ZV90aHltb2N5dGVzIiwKICAgICAgICAgICAgICAgICAgICAgIkROMSB0aHltb2N5dGVzIiwKICAgICAgICAgICAgICAgICAgICAgIkROMy1ETjQgdGh5bW9jeXRlcyIsCiAgICAgICAgICAgICAgICAgICAgICJhbnRpZ2VuIHByZXNlbnRpbmcgY2VsbHMiKQoKY2VsbF9vbnRvbG9neV9jbGFzcyA8LWMoImltbWF0dXJlIFQgY2VsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJpbW1hdHVyZSBUIGNlbGwiLAogICAgICAgICAgICAgICAgICAgICAgICAiaW1tYXR1cmUgVCBjZWxsIiwKICAgICAgICAgICAgICAgICAgICAgICAgImltbWF0dXJlIFQgY2VsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJpbW1hdHVyZSBUIGNlbGwiLAogICAgICAgICAgICAgICAgICAgICAgICAiaW1tYXR1cmUgVCBjZWxsIiwKICAgICAgICAgICAgICAgICAgICAgICAgIkROMSB0aHltaWMgcHJvLVQgY2VsbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICJpbW1hdHVyZSBUIGNlbGwiLAogICAgICAgICAgICAgICAgICAgICAgICAicHJvZmVzc2lvbmFsIGFudGlnZW4gcHJlc2VudGluZyBjZWxsIikKCnRpc3NAbWV0YS5kYXRhWywnZnJlZV9hbm5vdGF0aW9uJ10gPC0gcGx5cjo6bWFwdmFsdWVzKHggPSB0aXNzQG1ldGEuZGF0YSRjbHVzdGVyLmlkcywgZnJvbSA9IGNsdXN0ZXIuaWRzLCB0byA9IGZyZWVfYW5ub3RhdGlvbikKCnN0YXNoX2Fubm90YXRpb25zKHRpc3MsIGNsdXN0ZXIuaWRzLCBmcmVlX2Fubm90YXRpb24sIGNlbGxfb250b2xvZ3lfY2xhc3MpCmBgYAoKYGBge3J9CgpUU05FUGxvdChvYmplY3QgPSB0aXNzLCBkby5sYWJlbCA9IFRSVUUsIHB0LnNpemUgPSAwLjUsIGdyb3VwLmJ5PSdmcmVlX2Fubm90YXRpb24nKQpnZ3NhdmUgKCJUU05FX3RoeW11czIucGRmIikKYGBgCgojIFNhdmUgdGhlIFJvYmplY3QgZm9yIGxhdGVyCldoZW4geW91IHNhdmUgdGhlIGFubm90YXRlZCB0aXNzdWUsIHBsZWFzZSBnaXZlIGl0IGEgbmFtZS4KCmBgYHtyfQpmaWxlbmFtZSA9IGhlcmUoJzAwX2RhdGFfaW5nZXN0JywgJzA0X3Rpc3N1ZV9yb2JqX2dlbmVyYXRlZCcsIAogICAgICAgICAgICAgICAgICAgICBwYXN0ZTAoImRyb3BsZXRfIiwgdGlzc3VlX29mX2ludGVyZXN0LCAiX3NldXJhdF90aXNzLlJvYmoiKSkKcHJpbnQoZmlsZW5hbWUpCnNhdmUodGlzcywgZmlsZT1maWxlbmFtZSkKYGBgCgpgYGB7cn0KIyBUbyByZWxvYWQgYSBzYXZlZCBvYmplY3QKIyBmaWxlbmFtZSA9IGhlcmUoJzAwX2RhdGFfaW5nZXN0JywgJzA0X3Rpc3N1ZV9yb2JqX2dlbmVyYXRlZCcsIAojICAgICAgICAgICAgICAgICAgICAgIHBhc3RlMCgiZmFjcyIsIHRpc3N1ZV9vZl9pbnRlcmVzdCwgIl9zZXVyYXRfdGlzcy5Sb2JqIikpCiMgbG9hZChmaWxlPWZpbGVuYW1lKQpgYGAKCiMgRXhwb3J0IHRoZSBmaW5hbCBtZXRhZGF0YQoKU28gdGhhdCBCaW9odWIgY2FuIGVhc2lseSBjb21iaW5lIGFsbCB5b3VyIGNlbGxfb250b2xvZ3lfY2xhc3NzLCBwbGVhc2UgZXhwb3J0IHRoZW0gYXMgYSBzaW1wbGUgY3N2LgoKYGBge3J9CmhlYWQodGlzc0BtZXRhLmRhdGEpCmBgYAoKYGBge3J9CmZpbGVuYW1lID0gaGVyZSgnMDBfZGF0YV9pbmdlc3QnLCAnMDNfdGlzc3VlX2Fubm90YXRpb25fY3N2JywgCiAgICAgICAgICAgICAgICAgICAgIHBhc3RlMCh0aXNzdWVfb2ZfaW50ZXJlc3QsICJfZHJvcGxldCIsICJfYW5ub3RhdGlvbi5jc3YiKSkKd3JpdGUuY3N2KEZldGNoRGF0YSh0aXNzLCBjKCdwbGF0ZS5iYXJjb2RlJywnY2VsbF9vbnRvbG9neV9jbGFzcycsJ2NlbGxfb250b2xvZ3lfaWQnLCAnZnJlZV9hbm5vdGF0aW9uJywgJ3RTTkVfMScsICd0U05FXzInKSksIGZpbGU9ZmlsZW5hbWUpCmBgYAoKIyBGaWd1cmVzIGZvciBTdXBwbGVtZW50Cgo=